using AiQiuQuan.Sport.Model.Enums;

namespace AiQiuQuan.Sport.Model.Models
{
    /// <summary>
    /// 支付单dto
    /// </summary>
    public class PayOrderDto : BaseDto
    {
        /// <summary>
        /// 商户订单号(内部业务订单号)
        /// </summary>
        public string OrderNo { get; set; }

        /// <summary>
        /// 业务id
        /// </summary>
        public Guid BusinessId { get; set; }

        /// <summary>
        /// 业务类型：1场馆场地订单、2活动订单、3比赛订单
        /// </summary>
        public BusinessTypeEnum BusinessType { get; set; }

        /// <summary>
        /// 商品名称
        /// </summary>
        public string ProductName { get; set; }

        /// <summary>
        /// 商品描述
        /// </summary>
        public string ProductDescription { get; set; }

        /// <summary>
        /// 支付方式：1.微信支付、2支付宝支付、3.场馆会员卡支付
        /// </summary>
        public PayTypeEnum PayType { get; set; }

        /// <summary>
        /// 支付订单状态:1未支付、2已支付、3支付失败、5部分退款、6全部退款、10已过期、15已取消
        /// </summary>
        public PayOrderStateEnum PayState { get; set; }

        /// <summary>
        /// 第三方预支付ID
        /// </summary>
        public string? PrePayId { get; set; }

        /// <summary>
        /// 第三方支付ID
        /// </summary>
        public string? PayId { get; set; }

        /// <summary>
        /// 支付时间
        /// </summary>
        public DateTimeOffset? PayTime { get; set; }

        /// <summary>
        /// 付款人
        /// </summary>
        public string? Payer { get; set; }

        /// <summary>
        /// 支付备注
        /// </summary>
        public string? PayRemark { get; set; }

        /// <summary>
        /// 订单金额
        /// </summary>
        public decimal OrderAmount { get; set; }

        /// <summary>
        /// 实际支付金额
        /// </summary>
        public decimal PayAmount { get; set; }

        /// <summary>
        /// 优惠金额
        /// </summary>
        public decimal DiscountAmount { get; set; }

        /// <summary>
        /// 补偿金额，可正可负
        /// </summary>
        public decimal CompensationAmount { get; set; }

        /// <summary>
        /// 现金金额
        /// </summary>
        public decimal CashAmount { get; set; }

        /// <summary>
        /// 退款金额
        /// </summary>
        public decimal RefundAmount { get; set; }

        /// <summary>
        /// 退款时间（最近一次）
        /// </summary>
        public DateTimeOffset? RefundTime { get; set; }

        /// <summary>
        /// 退款备注
        /// </summary>
        public string? RefundRemark { get; set; }

        /// <summary>
        /// 额外json数据
        /// </summary>
        public string? ExtJson { get; set; }

        /// <summary>
        /// 用户ID
        /// </summary>
        public Guid UserId { get; set; }

        /// <summary>
        /// 终端类型：1 小程序、2 H5、3 APP
        /// </summary>
        public ClientTypeEnum ClientType { get; set; }
    }
}
